#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <fcntl.h>

int main() {
    int status;
    pid_t pid = fork();

    if (pid == 0) {
        // 子进程1：执行 cal > ofile.txt
        int fd = open("ofile.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
        if (fd < 0) {
            perror("open");
            exit(1);
        }
        dup2(fd, STDOUT_FILENO); // 标准输出重定向到文件
        close(fd);

        execlp("cal", "cal", NULL);
        perror("execlp cal"); // 如果执行失败
        exit(1);
    } else {
        // 父进程等待子进程1结束
        wait(&status);
        if (WIFEXITED(status) && WEXITSTATUS(status) == 0) {
            // cal 执行成功，执行 cat ofile.txt
            pid_t pid2 = fork();
            if (pid2 == 0) {
                execlp("cat", "cat", "ofile.txt", NULL);
                perror("execlp cat");
                exit(1);
            } else {
                wait(NULL); // 等待 cat 结束
            }
        } else {
            printf("cal command failed.\n");
        }
    }
    return 0;
}
